""""""
"""
构造方法  __init__(self)  注意是前后2个下划线 同时 关键字 self 千万不要忘了
在创建类对象(构造类)的时候.会自动执行
在创建类对象(构造类)的时候.将传入参数自动传入__init__方法 使用

属性(成员变量)的赋值
依次对变量赋值,太繁琐

利用构造类,可以一次性赋值,方便高效
"""


class 类_学生信息:
    姓名 = None   # 成员变量
    年龄 = None
    性别 = None

    # 函数 构造类 实现一次性填入信息    特别要记住 self 关键字一定要带,只要的类里的函数
    def __init__(self, 输入姓名, 输入年龄, 输入性别):   # 类的构造也是一种魔术方法
        """
        按照顺序填入 姓名, 年龄, 性别
        :param 输入姓名:
        :param 输入年龄:
        :param 输入性别:
        """
        self.姓名 = 输入姓名
        self.年龄 = 输入年龄
        self.性别 = 输入性别
        print("类_学生信息,创建了一个对象")  # 输出了这句话,证明函数被自动执行了


# 上面定义的 构造类, 使得我们可以像 函数传参一样,一次性传入数据 赋值 成员变量
学生1 = 类_学生信息("孙新罡", 37, '男')
print(f'学生1 这个类里的信息是: {学生1.姓名} {学生1.性别} {学生1.年龄}')


print('\n课后练习')
人数 = None
# 判断是否输入的是数字
try:
    人数 = int(input('学生信息录入系统,请输入要录入学生的人数:'))
except:
    print('输入错误,请正确输入数字')


列表 = []  # 统计录入人数
i = 1
while i <= 人数:
    列表.append('学生信息' + str(i))
    i += 1  # 千万记得,加循环的结束条件,不然死循环


# 打开文件录入信息
学生信息文件 = open("学生信息文件.txt", "a", encoding="utf-8")  # 在项目目录下可以不写全路径


i = 1
for 元素 in 列表:
    元素 = 类_学生信息  # 分别建立对象
    print(f'当前录入第{i}位学生信息,共{len(列表)}位学生')
    元素.姓名 = input('请输入学生姓名:')  # 类里 成员变量赋值
    元素.年龄 = input('请输入学生年龄:')
    元素.性别 = input('请输入学生性别:')
    print(f'学生{i}信息录入完成,信息为: 姓名: {元素.姓名} 年龄: {元素.年龄} 性别: {元素.性别}')
    # 写入到文本文件里
    学生信息文件.write(f'姓名: {元素.姓名} 年龄: {元素.年龄} 性别: {元素.性别}\n')
    i += 1



